Digital signal processing has become a mainstream technology employed by designers at the integrated circuit, board and system design levels. The technology is a core ingredient in many technology-related fields including the telecommunications and computer industries. For instance, mobile phones, modems and a myriad of related products depend on digital signal processors ("DSPs") for their basic functionality. DSPs are also effectively employed in audio, video and multimedia peripherals, disk drives and image processing systems for medical and scientific applications. As further developments in the DSP technology occur, DSPS will be advantageously employed in multitude of other applications.
First generation DSPs were highly specialized processors designed for executing various processes on digital signals such as digital computation and conversion based upon retrieval, filtering, equalization, removal of noise or echoes, modulation, Fourier transformations, extraction of the characteristic parameter of a signal, prediction and picture emphasis. The designs were characterized by pipelining arrangements for high speed arithmetic, memory, access and input/output ("I/O") functions. In addition to the capabilities previously mentioned, the DSPs now include general purpose hardware capabilities that, in combination with application programs, provide enhanced system functionality such as real-time control, communication with other processors, memory management and I/O management. For instance, a DSP may operate as a co-processor together with a general purpose microprocessor as the host.
In short, DSPs are basically microcomputers designed to perform specific signal processing tasks under software control. Thus, a high degree of the functionality of the DSP is entrusted to the applications software program. Consequently, an applications developer or programmer (in general, "user") is presented with several challenges regarding the analysis and debugging of the software. The challenges are due to the fact that the user is not only designing a signal processing system, but is also writing software.
Software debugging is not a trivial process. The process includes several tasks, such as ensuring that the software cycles correctly on the DSP. Additionally, the signal processing of the DSP, via an ad hoc and empirical measure of performance, must be periodically verified. Several errors may be detected as a result of the software debugging and signal analysis process including a fundamental error in the signal processing algorithm, a data error in the coefficients, parameters or constants or a software bug. An analysis of signals entering and exiting the DSP are important in determining the source of any error in the operation of the DSP.
Moreover, a conventional DSP software debugging process provides a view of the state of the registers and memory of the machine as the operation of the DSP is emulated and a software applications program (i.e., the software under test) is simulated thereon. The process of simulating the applications program on the emulated DSP generally occurs on a computer system such as a personal computer. Conventionally, the values of the registers and memory of the machine are textually displayed on the display of the personal computer such that a user may examine the values as the program is being operated on the emulated DSP. In a sense, the debugging is a brute force process where the user pictures in his mind the state of the machine that correlates with the operation of the machine at a particular stage and throughout the application of the program. The user, then, compares the picture in mind with the textual information provided and makes adjustments to the code, if necessary.
Of course, this brute force evaluation of the state of the machine in connection with the application program running on the emulated DSP is a very arduous task for the user. Additionally, a DSP provides a high level parallel processing capability thereby adding to the complexity of the debugging process. So, not only must the user be concerned with the states of the machine, but the throughput of the machine must be concurrently evaluated. In other words, the user must simultaneously evaluate if the applications program is driving the machine to its fullest potential to achieve the highest level of efficiency.
Accordingly, what is needed in the art is a more efficient way of debugging DSP software, such that development of the program logic is faster and more reliable. Further, what is needed in the art is a way of presenting information about the DSP logic to a user to allow the user to utilize DSP resources most effectively.